package test.administrator.example.com.mvptest1.demo.viewstate.data;

import android.os.Parcel;
import android.os.Parcelable;

import java.util.ArrayList;
import java.util.List;

import test.administrator.example.com.mvptest1.framework.lce.MvpLceView;
import test.administrator.example.com.mvptest1.framework.support.viewstate.lce.AbsParcelableLceViewState;

//序列化-万能-保存数据到内存中
public class ParcelableListLceViewState<D extends List<? extends Parcelable>, V extends MvpLceView<D>>
        extends AbsParcelableLceViewState<D, V> {

    public ParcelableListLceViewState() {
    }

    protected ParcelableListLceViewState(Parcel source) {
        readFromParcel(source);
    }

    public static final Creator<ParcelableListLceViewState> CREATOR =
            new Creator<ParcelableListLceViewState>() {
                @Override
                public ParcelableListLceViewState createFromParcel(Parcel source) {
                    return new ParcelableListLceViewState(source);
                }

                @Override
                public ParcelableListLceViewState[] newArray(int size) {
                    return new ParcelableListLceViewState[size];
                }
            };

    @Override
    public void writeToParcel(Parcel dest, int flags) {
        dest.writeList(loadedData);
        super.writeToParcel(dest, flags);
    }

    @Override
    protected void readFromParcel(Parcel source) {
        loadedData = (D) new ArrayList<Parcelable>();
        source.readList(loadedData, getClassLoader());
        super.readFromParcel(source);
    }

    protected ClassLoader getClassLoader() {
        return getClass().getClassLoader();
    }

}
